In a data storage environment, data may be distributed across one or more physical data storage devices, such as one or more disk drives, and may be divided into logical representations of a physical memory address space. In a data storage environment, input/output (I/O) operations may request access to data in order to perform particular operations. I/O operations may include read, write, copy, and delete operations and are typically associated with an application or process operating in the data storage environment.
In addition to providing logical access to physically distributed data storage, data storage environments may support generating and maintaining multiple copies of data located in a distributed manner. As used herein, the term “replica” refers to a copy of data located in a data storage and replication system, and the term “replication” refers to the process of generating replicas (i.e. copying data). Therefore, data storage systems supporting data replication may be referred to as data storage and replication systems.
In a data storage and replication system, data may be replicated for a variety of purposes. For example, data may be replicated within an array based on user input, data may be replicated for continuously maintaining an up-to-date copies of source data (i.e. “data mirroring”), and/or data may be replicated for creating point-in-time backups of source data (i.e “snapshots”). Thus, data replication refers to copying data for any suitable purpose in a data storage and replication system, including mirroring and making snapshots.
In addition to the aspects described above, conventional data replication systems may allow a user to specify one or more quality of service (QoS) levels associated with applications operating on the system. A QoS level is an expression of a performance objective associated with an application or process operating in a data storage and replication environment. For example, a QoS level may include a limit to be placed on the use of a system setting or parameter, such as maximum I/O latency, maximum I/O queue depth, etc. Alternatively, a QoS level may include a high-level performance objective, such as the time period within which an application must complete a task.
In conventional QoS-enabled data storage and replication systems, a QoS level may fail to be achieved if a data replication process overutilizes a shared system resource. For example, a replication process may copy a large amount of data within a data storage array, thus requiring a large amount of system resources. Replication may heavily utilize I/O buffers, internal link bandwidth, external link bandwidth, disk resources, and CPU processing resources. Yet these system resources may also be shared by one or more applications whose performance may suffer as a result. This may include failing to achieve a specified QoS level in some instances that require access to the shared I/O buffers, internal link bandwidth, and CPU resources which were overutilized by the replication operation.
Therefore, one problem associated with conventional data storage and replication systems is that applications may be adversely affected by replication processes sharing the same system resources. Because data storage and replication systems contain a finite amount of available resources (i.e. link bandwidth, CPU resources, etc.), application performance may suffer in response to unmanaged spikes in data replication resource use.
One conventional solution to the potentially negative impact on application performance described above, including the failure to meet specified QoS objectives, that may result from an unmanaged data replication rate includes allowing a user to manually adjust the maximum allowable replication rate (MARR). For example, a user may manually set a globally-applicable and static maximum allowable replication rate for a data storage and replication system. After being initially set, the maximum allowable replication rate may be manually adjusted by the user by selecting a higher or lower allowable rate. After adjustment, the maximum allowable replication rate remains constant (i.e static) until it is manually adjusted again by the user. Typically, data storage and replication systems provide for a variety of settings corresponding to a range of maximum allowable replication rates. For example, “low” “medium” and “high” settings may correspond to maximum replication rates of 25 Mb/s, 50 Mb/s, and 75 Mb/s, respectively.
One problem associated with manually adjusting a data replication rate in a QoS-enabled data storage and replication system is that optimal allocation and/or balancing of system resources between applications and replication operations is unlikely to be achieved. Specifically, system resource demands change dynamically yet manually configured maximum allowable replication rates are static. At any given time, therefore, system resources may be over- or under-provisioned from the level necessary to meet specified QoS objectives. For example, in a data replication system where a maximum allowable replication rate is manually set to “high” and where both a high-priority application and a replication process share a specific set of system resources, the system resources utilized by the replication process at the “high” rate may prevent enough resources from being simultaneously available to the high-priority application. Thus, the high-priority application may become ‘starved’ for system resources and its performance may suffer accordingly (i.e. fail to meet its QoS objectives). Alternatively, if manual adjustment of the data replication rate is set too low, the replication process may not complete its duties fast enough to meet its QoS objective while, at the same time, there exists an over-provisioning of resources dedicated to non-replication applications. Either scenario results in suboptimal system resource utilization.
Accordingly, in light of these difficulties associated with conventional manual adjustment of the replication rate in data replication systems, there exists a need for improved methods, systems, and computer program products for automatically adjusting a replication rate based on a specified QoS level.